﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0116_HammingDistance : IAlgorithm
    {
        // 汉明距离

        // 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
        // 给你两个整数 x 和 y，计算并返回它们之间的汉明距离。

        // 提示：
        //  0 <= x, y <= 2^31 - 1

        public void Test()
        {
            // 算法参数定义

            // 算法执行与打印
            Console.WriteLine(HammingDistance(4,1));
        }

        // 算法
        public int HammingDistance(int x, int y)
        {
            var xor = x ^ y;
            int res = 0;
            while (xor != 0)
            {
                res += 1;
                xor &= xor - 1;
            }
            return res;
        }
    }
}
